package cn.iocoder.yudao.module.product.dal.mysql.product;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.product.controller.app.product.vo.SecondProductPageReqVO;
import cn.iocoder.yudao.module.product.controller.app.product.vo.SecondProductViewHistoryReqVO;
import cn.iocoder.yudao.module.product.controller.vo.SecondProductPageRespVO;
import cn.iocoder.yudao.module.product.dal.dataobject.product.SecondProductDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface SecondProductMapper extends BaseMapperX<SecondProductDO> {

    default PageResult<SecondProductDO> selectPage(SecondProductPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<SecondProductDO>()
                .eqIfPresent(SecondProductDO::getProductName, reqVO.getProductName())
                .eqIfPresent(SecondProductDO::getProductStatus, reqVO.getProductStatus())
                .eqIfPresent(SecondProductDO::getCreator, reqVO.getCreator())
                .orderByDesc(SecondProductDO::getCreateTime));
    }

    IPage<SecondProductPageRespVO> customPage(IPage<SecondProductPageRespVO> page, @Param("reqVo") SecondProductPageReqVO reqVO);

    SecondProductPageRespVO customOne(@Param("reqVo") SecondProductPageReqVO pageVO);
}
